package com.xyy.saas.payment.cores.api;

import com.xyy.saas.payment.cores.param.*;
import com.xyy.saas.payment.cores.vo.*;
import com.xyy.saas.payment.cores.vo.jd.JdCreditUnionLoginVo;

import java.util.List;

/**
 * 银行贷款融资相关接口
 */
public interface PaymentLoanApi {
    /**
     * 京东融资采购联合登录
     */
    ResultVO<JdCreditUnionLoginVo> jdCreditUnionLogin(JdCreditUnionLoginParam param, String sign) ;

    /**
     * 金融类预申请统一入口
     * @param param
     * @return
     */
    ResultVO<LoanPreApplyResultVo> preApply(LoanPreApplyParam param);

    /**
     * 贷款预申请
     */
    ResultVO<PinganLoanPreApplyResultVo> payFiancePreApply(PinganLoanPreApplyParam pinganLoanPreApplyParam, String sign) ;
    /**
     * 京东采购融资贷款预申请
     */
    ResultVO<PinganLoanPreApplyResultVo> jdFiancePreApply(PinganLoanPreApplyParam param, String sign) ;

    ResultVO<AbchinaLoanPreApplyResultVo> abchinaLoanPreApply(AbchinaLoanPreApplyParam param);
    ResultVO<AbchinaLoanNotifyApplyStatusVo> queryAbChinaLoanApplyState(AbchinaLoanQueryApplyParam param);

    /**
     * 贷款申请查询
     * @param pinganLoanQueryApplyStatusParam
     * @param sign
     * @return
     */
    ResultVO<PinganLoanQueryApplyStatusVo> payFianceApplyStatus(PinganLoanQueryApplyStatusParam pinganLoanQueryApplyStatusParam, String sign);

    /**
     * 查询金融账户信息
     * @param pinganLoanQueryApplyStatusParam
     * @param sign
     * @return
     */
    ResultVO<FinanceAccountInfoVo> queryFinanceAccountInfo(PinganLoanQueryApplyStatusParam pinganLoanQueryApplyStatusParam, String sign);

    /**
     * 客户数据上送
     * @param sign
     * @return
     */
    ResultVO<String> payFianceSendCustomerData(PinganLoanDatasToSendDto pinganLoanDatasToSendDto, String sign);
    ResultVO<String> jdCreditSendCustomerData(PinganLoanDatasToSendDto pinganLoanDatasToSendDto, String sign);

    /**
     * 贷后数据上送，目前只有京东采购金融
     */
    ResultVO<String> pushJdLoanSceneData(JDPushLoanSceneDto dto);


    ResultVO<PinganLoginTokenVo> getPinganLoginToken(String businessUserId);

    ResultVO<XydCreditResultVo> searchCreditResult(Long merchantId, String uscc);

    /**
     * 贷中数据同步：物流数据、订单汇总数据
     * @param xydPushLoanSceneDto
     */
    ResultVO<String> pushXYDLoanSceneData(XYDPushLoanSceneDto xydPushLoanSceneDto);


    /**
     * 获取小雨点对账文件地址
     */
    ResultVO<List<XydGetFileDto>> getXydCheckFile(String fileType, String checkDate, String checkCycle);

    /**
     * 查询小雨点账户余额
     */
    ResultVO<XydAccountBalanceDto> queryXydAccountBalance(String accountNo);

}


